// PROGRAMA : INFPM001
// BIBLIOTECA : PRODETR
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : SEJUSP - SEC. DA JUSTICA E SEGURANCA PUBLICA
// INSTITUTO DE IDENTIFICACAO E PM
// PROGRAMADOR : EDU/FM DATA: 15/07/94
// OBJETIVO : MENU DE CONSULTAS
// ATUALIZACOES DATA
// PROGRAMA : INFPM001 27/10/1997
// BIBLIOTECA : PRODETR
// PROGRAMADOR :
// OBJETIVO : ADAPTACAO PARA O SHOPPING DO CIDADAO (P200)
// : ALTERACAO DE TELA E DATAS (N6) PARA (N8)
// EM 20/10/1999
// OBS : ESTE PROGRAMA FOI REESTRUTURADO POR SOLON MIRANDA
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Inftm001;
import br.com.vti.sisp_sicrim.antigo.model.Sislm001;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Infpm001 OBJETIVO : MENU DE CONSULTAS *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/infpm001")
public class Infpm001 {
	// Views utilizadas
	// Telas/relatorios utilizados
	Inftm001 inftm001;
	// Includes utilizados
	Sislm001 sislm001 = new Sislm001();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Infpm001 infpm001Anterior;
	String faseproc = "0";

	private int modulo = 0;

	private Inftm001 preMapas() {
		inftm001 = new Inftm001(true, sessao);
		// Arrays.fill(opc0, "");
		inftm001.setDataCorrente(UtilBean.obtemDataDia());
		inftm001.setNomeClasse(this.getClass().getSimpleName().toUpperCase());

		// MONTA CALENDARIO DO MES
		funcoes.sisnc001();
		inftm001.setMes(funcoes.mes);
		inftm001.setMesa(funcoes.dataL);
		return inftm001;
	}

	public Infpm001(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Inftm001 inftm001) {
		try {
			main(inftm001);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Inftm001 pinftm001) {
		if (pinftm001 == null) {
			primeiraVez = true;
			// inftm001 = new Inftm001 (primeiraVez);
			inftm001 = preMapas();
			inftm001.setNavegar("../infpm001/executar");
			result.include("inftm001", inftm001);
			sessao.setAtributo("INFPM001", this);
			inftm001.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pinftm001);
		}

		inftm001.setMensagem("");
		inftm001.setOperacao("");
		sislm001.l = 0;
		sessao.getSisgsisp().setVar(9);
		sessao.getSisgsisp().setVlt(9);
		sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 0, 2, "N", 9);

		inftm001.receberTela(false, result);
		if (sessao.getSisgsisp().getOperacao().equals("CAD")) {
			Sispm001 sispm001 = new Sispm001(result, sessao);
			sispm001.executar(null, null, null);
			return;
		}
		// PROGRAMA PRINCIPAL MENU DOS MODULOS
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Sispm001 sispm001 = new Sispm001(result, sessao);
			sispm001.executar(null, null, null);
			return;
		}
		if (sessao.getSisgsisp().getOperacao().trim().equals("")) {
			switch (inftm001.getCamtela()) {
			case 06: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "C");
				modulo = 4;
				monta();
				break;
			}
			case 8: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "C");
				modulo = 2;
				monta();
				break;
			}
			case 10: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "C");
				modulo = 3;
				monta();
				break;
			}
			case 12: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				break;
			}
			case 14: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				inftm001.enviarMensagem(null, "MODULO EXCLUSIVO DA OPCAO SISP DO MENU");
				return;
			}
			case 16: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "C");
				modulo = 07;
				monta();
				break;
			}
			case 18: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "C");
				modulo = 06;
				monta();
				break;
			}
			case 20: {

				// infpm001C.enviarReceberTela(false, result);
				// INFPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "S");
				modulo = 8;
				monta();
				break;
			}
			default: {
				break;
			}
			}
			// for (int i1 = 1; i1 <= 0; i1++) {
			// for (int i2 = 1; i2 <= 0; i1++) {
			sislm001.op0 = "";
			// }
			// }
			// for (int i1 = 1; i1 <= 0; i1++) {
			// for (int i2 = 1; i2 <= 0; i1++) {
			sislm001.de0 = "";
			// }
			// }
		}
		funcoes.sissm001(result, sessao);
		// CHAMA PROGRAMA DE ACORDO COM A OPERACAO
		inftm001.setOperacao("");
		sessao.setAtributo("INFPM001", this);
		result.include("inftm001", inftm001);
		if (!result.used()) {
			inftm001.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	}

	private void monta() {
		Sissm003 sissm003 = new Sissm003(result, sessao);
		sissm003.mdfuo1 = sislm001.mdfuop;
		sissm003.z = sislm001.l;
		sissm003.modulo = modulo;
		sissm003.voltar = "br.com.vti.sisp.controller.programa.Rchpm001";
		sissm003.executar(null, null);
	} // SISCERRO}}} //UtilBean.mensagemTexto("!  ERROR NUMERO:" *ERROR-NR
		// "    LINHA:" *ERROR-LINE " PROGRAMA:" inftm001.getNomeClasse() "!");

	private void restaurarEstados(Inftm001 pinftm001) {
		this.infpm001Anterior = (Infpm001) sessao.getAtributo("INFPM001");
		if (pinftm001 != null) {
			inftm001 = pinftm001;
			inftm001.setEmpresa(sessao.getSisgsisp().getEmpresa());
			inftm001.setVersao(sessao.getSisgsisp().getVersao());
		} else {
			inftm001 = this.infpm001Anterior.inftm001;
		}
		inftm001.setSessao(sessao);

		// MONTA CALENDARIO DO MES
		funcoes.sisnc001();
		inftm001.setMes(funcoes.mes);
		inftm001.setMesa(funcoes.dataL);
		this.faseproc = this.infpm001Anterior.faseproc;
	}
}
